package part8

//区块链迭代器
//我们不会一次性加载所有的区块数据
//而是一个一个的迭代加载
type BlockchainInterator struct {
	currentHash string
	DB          map[string]Block
}

//获得一个迭代器
func (bc *Blockchain) Iterator() *BlockchainInterator {
	return &BlockchainInterator{bc.L, bc.DB}
}

//返回当前块
//并指向前一个块
func (i *BlockchainInterator) Next() *Block {

	block := i.DB[i.currentHash]
	i.currentHash = block.GetPrevHashString()
	return &block
}
